3. MIG:Memory Interface Generator使用手册

您所在的位置:网站首页 ui是什么意思中文 ug y 3. MIG:Memory Interface Generator使用手册

3. MIG:Memory Interface Generator使用手册

2024-01-05 20:21| 来源: 网络整理| 查看: 265

Vivado中提供了MIG核来方便的控制外部的DDR,本文主要是针对DDR3(我用的板卡上只有DDR3)。

MIG提供了2种控制接口:AXI4和Native。前者是Xilinx 7系FPGA的主推总线。Native接口的读写速度更快,AXI4接口实际是在Native上套了个马甲。

(在Block Design里只能使用AXI4接口,不能使用Native接口,因此先把Native接口封装成IP核,给Block Design调用)

1.在Vivado中配置MIG 图170. MIG的初始配置

图171. 选择要兼容的FPGA 图172. 选择DDR的类型

图173. 控制器的选项

Clock Period:选择PHY的工作频率。如果是400MHz,DDR上下沿传输,线速率就是800Mb/s。

PHY-to-Controller Clock Ratio:选择PHY到内存控制器(用户时钟)的时钟比例,可以是2:1或4:1。PHY的时钟就是上面的Clock Period,如果PHY的频率是400MHz,4:1的比率,则内存控制器提供给用户接口的时钟(ui_clk)就是100MHz。

Memory Type:选择内存的类型,是颗粒,还是内存条;

Memory Part:选择内存颗粒/内存条的型号;

Data Width:根据前面选择的内存类型(Memory Type)来设置DDR内存的数据线宽度。(其实是板卡上实际DDR内存连接的数据线宽度,例如x16的DDR颗粒放了2片,就是32-bit)。

Data Mask:是否使用DDR上的DM位。可以不用,能节省FPGA的I/O引脚。

Number of Bank Machines:设置Bank Machines的个数。在任意指定的时间,一个Bank Machine只能管理单个DRAM的bank(DDR3芯片有8个Bank)。这个值设置的大,控制效率就高;设置的小,效率就低,但是省资源。

Ordering:控制命令的顺序。当选择Normal模式时,控制器会对发给DDR的命令进行重新排序,以达到最高的效率;Strict模式让控制器严格执行接收到的命令顺序。

需要说明的是,时钟比例设为了4:1,使用内存的数据线宽度是32bit,那么控制器用户端提供的数据线位宽是:32×4×2=256 bit。×4是因为4:1,×2是因为DDR使用双倍速率(上下沿)传输,用户端只能上升沿传输,因此要乘以2.

图174. DDR选项

Input Clock Period:输入时钟频率,给PLL用的。IP核根据此输入时钟来产生前面设置的PHY时钟。这个时钟选200MHz会有优惠政策,下一页的参考时钟可以用它。

Read Burst Type and Length:突发读的类型和长度。DDR的突发长度默认是BL=8,。

Output Driver Impedance Control:输出驱动器的阻抗控制;

图175. FPGA选项

System Clock:系统时钟,就是上一页的Input Clock,选择它的输入方式:差分,单端还是No Buffer。当使用FPGA内部时钟的时候,才能选择No

Buffer,这时FPGA就不再给它添加IBUF了。(此处我用的是Zynq PS提供的200MHz时钟,因此选No Buffer)。

Reference Clock:选择参考时钟的输入类型。参考时钟需要单独输入。当input clock的频率是199MHz~201MHz之间时,可以选择系统时钟(就是Input Clock),这就是前面说的彩蛋。

System Reset Polarity:

Internal VREFSelection:当使用internal VERF时,FPGA的VERF引脚可以当普通I/O使用。但是只能在数据率≤800Mb/s时使用。

I/O Power Reduction:节能选项,选上。

XADC Instantiation:让IP核实例化一个XADC来检测温度。必须使用温度检测来做温度补偿,否则数据传输会出问题。

图176. FPGA的扩展选项

Internal Termination Impedance:FPGA的内部终端电阻,仅仅给High Range Banks使用的(什么意思?)。

图177. IO管脚规划

图178. 管脚的分配&验证&保存 图179. 选择系统信号

Sys_reset:系统的异步复位信号,可以在FPGA内部产生,这样就不用I/O输入了。复位信号的极性默认是active-low,在 图172 所示FPGA选项中的“System

Reset Polarity”中设置。

Init_calib_complete:输出信号。指示内存初始化和校准已经完成,接口可以使用。该信号通常也在FPGA内部使用,无需驱动I/O。

Tg_compare_error:输出信号。只在example design中使用,表示检测到错误了。用户逻辑中不适用它。

图180.选择系统信号

如果sys_clk和ref_clk选择了No Buffer模式(图175),就不会出现图180所示的部分。只有图179的部分。

图181. 信息汇总

图182. 仿真选项 图183. PCB信息 图184. 生成IP核 IP核的细节

IP核如下图所示。

图185. Xilinx 7系FPGA的MIG

User Interface Block:用户接口。给用户提供了简单的FPGA接口,主要是把地址线铺平了(addr = bank+row+column),并且对read和write信号进行了buffer缓冲,写命令也是buffer缓冲的。

Memory Controller:内存控制器。前端提供native接口,后端连接到PHY接口。

Physical Layer:前端接Memory Controller,后端连接到DDR芯片上。PHY接口完成DDR芯片的时序控制。

表1. User Interface的信号定义

表2. app_cmd[2:0]的含义 User Interface的地址

UI提供的是铺平的地址,默认选择的是addr=bank + row + column,见图174。

图186. UI接口的地址映射 写命令

App_en和app_rdy同时有效时,命令才被写进去。而且一旦app_en被拉高,必须等到app_rdy为高后,才能变低。(就是必须等app_rdy信号)。

图187. 当app_en和app_rdy同时有效时,命令才被真正的接收 写数据

写数据可以在写命令之前,之后,或同时进行。

图188. 4:1模式,写数据可以在写命令的前、后或同时进行

图189. 2:1模式,app_wdf_end必须隔一个有效一次(2次写才能凑够8个数据)

写数据的时候按小端写入(低字节先写,高字节后写)。假如UI的数据是64bit(DDR数据线是8位)的0x0000_0806_0000_0805,写入的顺序如下图所示。

图190. 写数据时低位在前 读数据

4:1时app_rd_data的宽度是DDR数据线宽度的8倍,因此一次就能把BL=8的数据读出来,如下图所示,每次app_rd_data_valid只有效一个时钟周期。

图191. 4:1时的读时序(BL=8)

徐红伟@百香果科技

参考:

Xilinx官方文档:ug586“Zynq-7000 AP Soc and 7 Series Devices Memory Interface Solutions v4.0”



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3